package br.unipar.bancodedados.manager.impl;

import br.unipar.bancodedados.command.Command;
import br.unipar.bancodedados.command.CommandInvoker;
import br.unipar.bancodedados.command.SalvaUsuarioCommand;
import br.unipar.bancodedados.entidade.Usuario;
import br.unipar.bancodedados.manager.ConnectionSingleton;
import br.unipar.bancodedados.manager.UsuarioManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;

public class JdbcUsuarioManagerImpl implements UsuarioManager {

    @Autowired
    private CommandInvoker commandInvoker;
   
    @Override
    public void salvar(Usuario usuario) {
        Command cmd = new SalvaUsuarioCommand(usuario);
        commandInvoker.invoke(cmd);
    }

    @Override
    public List<Usuario> listar() {
        List<Usuario> list = new ArrayList<Usuario>();

        try {
            Statement stmt = ConnectionSingleton.getInstance().createStatement();

            String sql = "select id, login, senha from Usuario";
            ResultSet result = stmt.executeQuery(sql);

            while (result.next()) {
                Usuario usuario = new Usuario();
                usuario.setId(result.getLong("id"));
                usuario.setLogin(result.getString("login"));
                usuario.setSenha(result.getString("senha"));

                list.add(usuario);
            }


            stmt.close();
        } catch(Exception e) {
            e.printStackTrace();
        }

        return list;
    }

}
